<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <script src="../dist//vue.js"></script>
    <!-- 这里取值的时候会调用JSON.stringfy()会对数组中的对象取值 所以对象会收集依赖 -->
    <div id="app">
        <h1>{{a}}</h1>
        <h1>{{arr}}</h1>
    </div>
    <script>
        const vm = new Vue({
            el: "#app",
            data: {
                arr: [1, 2, 3, { a: 1 },['a','b',['a,b']]], // 给数组本身增加dep
                a:{a:1} //给对象也增加dep，如果后续用户增添了属性 我可以触发dep更新
            }
        })
        // vm.arr[0] = 100; //这些方式能监控到吗？ 只重写了数组方法
        // vm.arr.length = 100; //没有监控长度变化

        // vm.arr[3].a = 100 //有用
        // console.log(vm._data);
        // vm.arr.push(100,100,100) ; //这里要注意的是 你改变的不是arr属性 而是arr对象的数组对象
        // vm.arr=[]; // 这个是可以更新的 因为这个属性被劫持了

        setTimeout(()=>{
            // vm.arr.push(100,100);
            // vm.a.b=100;
            // vm.a.__ob__.dep.notify();//$set原理 手动触发更新
            vm.arr[4].push('c')
        },1000)
    </script>

</body>

</html>